跳到主要内容

Mysql 忘记密码

要解决 MySQL root 用户忘记密码的问题,请按以下步骤操作(针对 Linux 系统):

步骤 1: 停止 MySQL 服务

sudo systemctl stop mysql

步骤 2: 启动 MySQL 无认证模式

sudo mysqld_safe --skip-grant-tables --skip-networking &
  • 此模式允许免密登录,但关闭网络连接确保安全。

步骤 3: 无密码登录 MySQL

mysql -u root

步骤 4: 刷新权限并重置密码

FLUSH PRIVILEGES;  -- 关键步骤!

-- 根据你的 MySQL 版本选择重置命令:
-- MySQL 5.7.6+ 或 MariaDB 10.1+:
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';

-- MySQL 5.7.5 及更早版本:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('你的新密码');

步骤 5: 退出并重启 MySQL

EXIT;
# 关闭 MySQL 进程
sudo kill `sudo cat /var/run/mysqld/mysqld.pid`

# 正常启动服务
sudo systemctl start mysql

验证新密码

mysql -u root -p
# 输入刚设置的新密码

常见问题解决:

mysqld_safe 未找到‌

尝试完整路径: sudo /usr/sbin/mysqld_safe --skip-grant-tables &

PID 文件路径不同‌

检查实际 PID 路径: sudo ps aux | grep mysqld

MySQL 8.0+ 特殊步骤‌

若遇到密码策略问题,重置后执行:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码';

系统服务名差异‌

某些系统服务名可能是 mariadb 或 mysqld:

sudo systemctl stop mariadb    # 停止服务示例
sudo systemctl start mysqld # 启动服务示例
  • 完成后,请使用 mysql -u root -p 输入新密码测试登录。此操作需服务器物理访问权限,远程服务器需通过控制台操作。